<?

class diversDriver {

	/* ---------------------------------
	 |            PUBLIQUE            |
	 ---------------------------------*/



	function initData () {
	}


	function Purge() {
		//Aucun champ a purger, car on ne peut pas en creer
	}

	function resetSearch(){
	}


	function getUrl($Data=""){
		preg_match("#(.*)\[(.*)\](.*)#",$this->Conf["URL"],$Url);
		//On range les resultats
		$Racine = $Url[1];
		//On recupere la valeur entre crochets
		$Check = $Data[$Url[2]];
		$Ref = $Check;
		$Inc = $Url[3];
		//On calcule le nombre de zeros necessaires devant la reference
		// !!!! Attention statique, a retirer
		$NbZero = 8 - strlen($Check);
		for ($i=0;$i<$NbZero;$i++){
			$Check = "0$Check";
		}
		//On cr�� la nouvelle url
		$NewLine = $Racine.$Check.$Inc;
		//On passe a l'incrementation du ?
		preg_match("#(.*)\?(.*)#",$NewLine,$Edit);
		$Before = $Edit[1];
		$After = $Edit[2];
		$i=1;
		$test = false;
		//A chaque fois que le fichier-$i existe, on l'upload.
		//Des qu'une erreur est detecte, on quite le while.
		while ($test == false){
			// !! Statique: si i<10,on rajoute un 0 comme cela est fait dans le fichier dans le fnaim.
			if ($i<10) $Inc = "0$i";
			else $Inc = $i;
			$Url =  $Before.$Inc.$After;
			$i++;
			//On upload vers l'endroit cite dans la conf, et on recupere le nom du fichier.
			$File = explode("/",$Url);
			$Dest = $this->Conf["UPLOADTO"]."/".$File[count($File)-1];
			$R = @copy($Url,$Dest);
			if (!$R) $test = true;
			//On cree l'objectclass qui va etre envoye
			else{
				$Tab["Adresse"] = $this->Conf["UPLOADTO"]."/".$File[count($File)-1];
				$Tab["Id"] = $Ref.$Inc;
				$Tab["ObjectType"] = $this->titre;
				$Generic = new genericClass($this->Module,$Tab);
				foreach ($this->childOf as $Parent){
					if (!is_array($Generic->getParents($Parent["Titre"]))) {
						$Generic->addFkey($Parent["Titre"],$Data["Id"]);
					}
				}
				$Generic->Save();
			}
				
		}
	}


	function checkNew($Data=""){
		$Limits = $GLOBALS["Systeme"]->Modules[$this->Module]->Db->LimRequete;
		switch ($this->Conf["TYPE"]){
			case "urlUpload":
				diversDriver::getUrl($Data);
				break;
		}
		$GLOBALS["Systeme"]->Modules[$this->Module]->Db->LimRequete = $Limits;
	}




	function Search($Recherche="",$BlurSearch=false){
	}


	function searchAll($Opt="NO"){
	}


	function generateId($Result){
	}

	function multiSearch($Recherche){
	}


	function getReference(){
	}


	function getReflexiveRelatives($id,$typeSearch,$Parametres=''){
	}


	function getBeacon($Var,$Data,$SupVar){
	}

	function getFkeyRelatives($id,$typeSearch,$Recherche,$Card,$Parametres=''){
	}

	function createBeaconTab(){
	}

	function insertObject(){
	}


	function createData(){
	}

	function insertKey($Tab,$Type){
	}


	function Erase($Id){
	}


	function EraseAssociation($Relative,$ObjId,$Type){
	}


	/*---------------------------------
	 |           PRIVEE               |
	 ---------------------------------*/

	/*---------------------------------
	 |           CREATION              |
	 ---------------------------------*/

	function init() {
	}


	function saveData(){
	}


	/*---------------------------------
	 |           RECHERCHE             |
	 ---------------------------------*/


	/* Cette fonction range et classe dans un tableau les donnees trouvees.
	 Renvoi: le tableau de resultat.
	 Parametres: les donnees trouvees dans la base de donnees, la recherche effectuee*/
	function analyzeSearch($Donnees, $Recherche) {
		$Resultat= Array();
		$compteur=0;
		$totalCibles=count($this->Cibles);
		//On procede au calcul de la note que l'on enregistre, avec le reste, dans le tableau final
		while($Enregistrement=mysql_fetch_assoc($Donnees)){
			foreach ($this->Cibles as $valeurCible){
				foreach ($Enregistrement as $clefEnr=>$valeurEnr){
					$Resultat[$compteur][$clefEnr] = $valeurEnr;
					//Calcul de la note
					$note= (preg_match('!'.$Recherche.'!i', $valeurEnr) && $clefEnr== $valeurCible['nom']) ? $this->calcNote($valeurEnr,$Recherche,$valeurCible['searchorder']): 10;
				}
			}
			$Resultat[$compteur]['note'] = $note;
			$compteur++;
		}
		$Resultat = $this->bubbleSort($Resultat,'note');
		$Resultat=$this->setSearchOrder($Resultat);
		return $Resultat;
	}

	/*---------------------------------
	 |          TEST/AUTO              |
	 ---------------------------------*/

	function getTableName(){
	}

	function findReflexive(){
	}

	function getTime(){
	}
}